home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Collection of Tools & Utilities
/
Collection of Tools and Utilities.iso
/
comm
/
ca29_3.zip
/
BBS.CMD
< prev
next >
Wrap
OS/2 REXX Batch file
|
1992-07-02
|
24KB
|
1,458 lines
LEGE "Scripted BBS (1.2); initializing"
WOPE 10,1 12,78 (default)
ATSA 11,3 (default) "Initializing BBS.. "
S20="_PARM"(11:14)*","*"_PARM"(0:3)
S21="ATE0Q0V1X1S0=2 S7=30 S9=10^M"
S22="\BBS"
S23="\BBS\FILES"
S24="\BBS\MAIL"
S25="\BBS\BULLETIN"
SET PARI NONE
SET DATA 8
SET STOP 1
SET MASK ON
SET CR_I CR_L
SET ASCI UP_L LF
SET SOFT ON
SET ZMOD AUTO OFF
SET ZMOD RECO OFF
IF ISSC "BBSDAT"
FCAL "BBSDAT"
ELSE
S10="_SCRIPT"
GOSU Parse_Fn
S10=S10*"\BBSDAT"
IF ISSC S10 FCALL S10
ENDI
SUBD S29
DLDI S28
FFIR S22
IF FAILURE or NOT ISFILE S22*"\BBS-User"
WCLO
GOTO NoUser
ENDI
SET BAUD S20(5:8)
SET PORT S20(0:3)
SET INAF OFF
SET ALAR OFF
SET ATIM 1
CHDI S22
SET DLDI S23
LEGE "Scripted BBS (1.1); Press ESC to terminate or to CHAT."
TRAN "_MESCAPE"
WCLO
ON ESCA GOSU Escape
S9="* BBS script loaded"
CLOG S9
GOSU Log_Item
GOTO Restart
Parse_Fn:
LENG S10 N10
FOR N11=(N10-1),0,-1
IF STRCMP S10(N11:N11) ":" or STRCMP S10(N11:N11) "\" GOTO PAFN100
ENDF
S11=S10
S10=""
RETU
PAFN100:
S11=S10(N11+1:N10)
IF STRCMP S10(N11:N11) "\" DEC N11
S10=S10(0:N11)
RETU
NoUser:
LEGE "Scripted BBS (1.1); Error initializing"
WOPE 10,10,17,70 (default) NoUser_E
ATSA 10,12 (default) " BBS initialization "
ATSA 11,12 (default) "There is no user ID file (BBS-User) to be found on the"
ATSA 12,12 (default) "subdirectory: "*S22
ATSA 14,12 (default) "The script BBSETUP must be used to identify the subdir-"
ATSA 15,12 (default) "ectory used by this BBS, and to create and maintain the"
ATSA 16,12 (default) "files it uses."
ATSA 17,29 (default) " Press any key to continue "
KEYG S0
NoUser_E:
WCLO
EXIT
Escape:
CURS N98,N97
WOPE 10,1 20,78 (default) ESC_ESC
ATSA 10,3 (default) " BBS Operator menu "
ATSA 12,3 (default) "1) Terminate the BBS"
IF FLAG(3)
ATSA 13,3 (default) "2) Enter chat with caller"
ELSE
ATSA 13,3 (default) ".. No caller currently on "
ENDI
ATSA 14,3 (default) "3) Cancel this window"
ATSA 15,1 (default) "├────────────────────────────────────────────────────────────────────────────┤"
IF ISSCRIPT "BBMAINT" and NOT FLAG(3)
ATSA 16,3 (default) "4) Invoke BBS maintenance scripts"
ELSE
ATSA 16,3 (default) ".. Maintenance script not available"
ENDI
IF ISSCRIPT "BBSETUP" and NOT FLAG(3)
ATSA 17,3 (default) "5) Invoke BBS setup script"
ELSE
ATSA 17,3 (default) ".. Setup script not available"
ENDI
ATSA 18,1 (default) "├────────────────────────────────────────────────────────────────────────────┤"
ATSA 19,3 (default) "Select item: "
ATSA 20,31 (default) " Press ESC to cancel "
LOCA 19,16
KEYG S0
WCLO
LOCA N98,N97
SWIT S0
CASE "1"
GOTO End
ENDC
CASE "2"
IF FLAG(3) GOTO Chat
ENDC
CASE "3"
RETU
ENDC
CASE "4"
GOSU EndBBS
IF ISFILE "BBMaint" EXECUTE "BBMaint"
ENDC
CASE "5"
GOSU EndBBS
IF ISFILE "BBSetup" EXECUTE "BBSetup"
ENDC
DEFA
SOUN 100,100
ENDC
ENDS
GOTO Escape
ESC_ESC:
S0="3"
RETU
End:
GOSU EndBBS
EXIT
EndBBS:
SET TTHR OFF
WOPE 10,1 12,78 (default)
ATSA 11,3 (default) "Terminating BBS.. "
HANG
S9="* BBS script terminated"
CLOG S9
GOSU Log_Item
SET DLDI S28
CHDI S29
RESE
CLEA
MESS "BBS terminated... type Alt-X to exit COM-AND^M^J^M^J"
TRAN "_MINIT"
DELE "\HOSTTEMP.TXT"
WCLO
RETU
Chat:
TRAN "^M^J"
TRAN "^M^JOperator initiated chat mode..."
S2="_LEGEND"
LEGE "Scripted BBS (1.1); Chat mode; null entry at prompt to exit"
Chat_Loo:
MESS "^M^JSYSOP: "
GET S0 80
IF NULL S0
MESS "Continue? (Y/N, cr=y): "
GET S0 2
IF FIND S0 "N"
TRAN "^M^JChat terminated by SYSOP"
LEGE S2
RETU
ENDI
S0=" "
ENDI
TRAN "^M^JSYSOP: "
TRAN S0
MESS "Caller: "
TRAN "^M^JCaller: "
GOSU Read_Com
IF FLAG(0)
MESS "^M^JCaller disconnected"
LEGE S2
RETU
ENDI
GOTO Chat_Loo
Limit_Ti:
IF FLAG(1)
SET FLAG(0) OFF
RETU
ENDI
TIME S9 1
N19=S9(0:1)*60+S9(3:4)
N18=S6(0:1)*60+S6(3:4)
IF GT N18 N19
N19=N19+1440
ENDI
N19=N19-N18
IF GT N19 N0
TRAN "^M^JYour alotted time has expired..."
TRAN "^M^JYou are being disconnected."
SET FLAG(0) ON
RETU
ENDI
SET FLAG(0) OFF
RETU
Read_Com:
IF FLAG(3)
GOSU Limit_Ti
IF FLAG(0) RETURN
ENDI
RGET S9 80 180
IF NOT CONNECTED GOTO Disconnect
IF FAILED GOTO Timeout
FIND S9 "NO CARRIER"
IF FOUND GOTO Disconnect
SET FLAG(0) OFF
RETU
Timeout:
TRAN "^M^J... autodisconnect due to timeout^M^J"
MESS "^M^J... autodisconnect due to timeout"
GOTO RComm_Ex
Disconne:
MESS "^M^JCaller disconnected"
RComm_Ex:
SET FLAG(0) ON
RETU
Display_:
IF FLAG(1) RETURN
TIME S9 1
N19=S9(0:1)*60+S9(3:4)
N18=S6(0:1)*60+S6(3:4)
IF GT N18 N19
N19=N19+1440
ENDI
N19=N0-(N19-N18)
STRF S9 "^M^J(%d minutes remaining)" N19
TRAN S9
RETU
Logon:
FOPENI "BBS-User" TEXT
IF FAILED
SET FLAG(0) ON
RETU
ENDI
Logon_Lo:
READ S9 80 N19
IF EOF
FCLOSEI
SET FLAG(0) ON
RETU
ENDI
FIND S9(0:0) "<"
IF FOUND GOTO Logon_Loop
SWIT S1
CASE S9(0:15)
GOTO Logon_OK
ENDC
ENDS
GOTO Logon_Lo
Logon_OK:
SET FLAG(1) OFF
SET FLAG(3) ON
N0=60
FIND S9(16:16) "P"
IF FOUND
SET FLAG(1) ON
N0=3000
ENDI
TIME S6 1
FCLOSEI
SET FLAG(0) OFF
RETU
Disp_Fil:
IF ISFILE S8
TRAN "^M^J"
SEND ASCII S8
RETU
ENDI
IF ISFILE S22&"\"*S8
TRAN "^M^J"
SEND ASCII S22&"\"*S8
RETU
ENDI
TRAN S9
RETU
Log_Item:
FOPENO S22&"\BBS-LOG" TEXT APPEND
IF FAILED RETURN
DATE S7
CONC S9(59) S7
TIME S7 1
CONC S9(70) S7
WRIT S9
WRIT "^M"
FCLOSEO
RETU
Copy_Tex:
N20=0
Copy_Loo:
INC N20
S9=N20&": ^H"
TRAN S9
GOSU Read_Com
IF FLAG(0) RETURN
LENG S9 N18
IF NOT ZERO N18
PRES S9
WRIT S9
IF FAILED
TRAN "Error recording text - please try later^M^J"
RETU
ENDI
WRIT "!"
GOTO Copy_Loo
ELSE
TRAN "^M^JComplete? (Y/N, cr=n): "
GOSU Read_Com
IF FLAG(0) RETURN
IF NOT FIND S9 "Y"
WRIT "!"
GOTO Copy_Loo
ENDI
ENDI
RETU
Restart:
CHDI S22
SET RECH OFF
SET RDIS OFF
CLEA
LOCA 0,0
SET FLAG(1) OFF
SET FLAG(2) OFF
SET FLAG(3) OFF
HANG
MESS "^M^JWaiting..."
PAUS 3
SET BAUD S20(5:8)
TRAN S21
Wait_Con:
RGET S9 80 180
IF FAILED GOTO Wait_Connect
FIND S9 "NO CARRIER"
IF FOUND GOTO Restart
FIND S9 "CONNECT"
IF NOT FOUND GOTO Wait_Connect
GOSU AutoBaud
PAUS 3
RFLU
SET RECH ON
SET RDIS ON
PAUS 1
S9="^M^JThe Flying Scotsman greets you!! ^M^J"
S8="BBS-Welc"
GOSU Disp_Fil
N10=0
ID_Query:
MESS "^M^JID prompt: "
TRAN "^M^JEnter your ID (or enter GUEST): "
GOSU Read_Com
IF FLAG(0) GOTO Exit
IF NULL S9
INC N10
IF GE N10 3 GOTO Logon_Fail
GOTO ID_Query
ENDI
SWIT S9
CASE "GUEST"
GOSU Register
GOTO Exit
ENDC
ENDS
S1=S9(0:7)
UPPE S1
Password:
TRAN "^M^JEnter your password: "
SET RECH OFF
SET RDIS OFF
GOSU Read_Com
SET RECH ON
IF FLAG(0) GOTO Exit
SET RDIS ON
IF NULL S9
INC N10
IF GE N10 3 GOTO Logon_Fail
GOTO Password
ENDI
S1(8:79)=S9(0:7)
GOSU Logon
IF NOT FLAG(0)
S9="Logon: "*S1(0:7)
GOSU Log_Item
SET FLAG(2) OFF
S1=S1(0:7)
CLOG "* BBS logon: "*S1
TRAN "^M^J"
GOTO Main_Pro
ENDI
Logon_Fa:
TRAN "Unrecognized ID/Password^M^J"
INC N10
IF GE N10 3
TRAN "You have exceeded the number of tries allowed for logon^M^JBye...^M^J"
MESS "^M^JLogon attempts failed^M^J"
S9="Failed logon"
GOSU Log_Item
GOTO Exit
ENDI
GOTO ID_Query
Main_Pro:
MESS "^M^JMain prompt: "
GOSU Display_
IF NOT FLAG(1)
S9="^M^JC)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
S8="BBS-NpMn"
ELSE
S9="^M^JP)rivileged, C)omment, B)ulletins, M)ail, F)iles, A)larm or E)xit: "
S8="BBS-PrMn"
ENDI
GOSU Disp_Fil
GOSU Read_Com
IF FLAG(0) GOTO Exit
LJ S9
S9=S9(0:0)
SWIT S9
CASE "A"
GOTO Alarm
ENDC
CASE "M"
GOTO Mail_Com
ENDC
CASE "F"
GOTO File_Com
ENDC
CASE "C"
GOTO Comment
ENDC
CASE "B"
GOTO Bull_Com
ENDC
CASE "E"
GOTO Logoff
ENDC
CASE "P"
IF FLAG(1) GOTO Priv_Prompt
ENDC
ENDS
TRAN "^M^JCommand not recognized... try again^M^J"
GOTO Main_Pro
Logoff:
CHDI S22
TRAN "^M^JOK... Bye^M^J"
S9="Logoff: "*S1(0:7)
CLOG S9
GOSU Log_Item
Exit:
S9="* BBS cycled"
CLOG S9
GOSU Log_Item
MESS "^G"
GOTO Restart
Alarm:
SOUN 440 500
SOUN 493 100
SOUN 554 100
SOUN 587 100
SOUN 659 100
SOUN 739 100
SOUN 830 100
SOUN 880 500
GOTO Main_Pro
Priv_Pro:
MESS "^M^JPrivilege prompt: "
GOSU Display_
S9="^M^JL)ist, P)ath, S)ubdir, D)OS, M)ain or E)xit: "
S8="BBS-PPMn"
GOSU Disp_Fil
GOSU Read_Com
IF FLAG(0) GOTO Exit
LJ S9
S9=S9(0:0)
SWIT S9
CASE "L"
GOTO DIR
ENDC
CASE "S"
GOTO CHDIR
ENDC
CASE "P"
GOTO PATHLIST
ENDC
CASE "D"
GOTO Shell
ENDC
CASE "M"
GOTO Main_Pro
ENDC
CASE "E"
GOTO Logoff
ENDC
ENDS
TRAN "^M^JCommand not recognized... try again^M^J"
GOTO Priv_Pro
CHDIR:
MESS "^M^JCHDIR Command: "
TRAN "^M^JEnter the drive:subdirectory: "
GOSU Read_Com
IF FLAG(0) GOTO Exit
IF NOT NULL S9
CHDI S9
SET FLAG(2) ON
ENDI
GOTO Priv_Pro
PATHLIST:
MESS "